CloudFront.8 CloudFront distributions should use SNI to serve HTTPS requestsの検出結果がFAILEDとなる条件について確認してみた
リテールアプリ共創部@大阪の岩田です。
Security Hubのコントロール[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requests
の検出結果がFAILEDとなる条件について確認してみたので内容を共有させて頂きます。
CloudFront distributions should use SNI to serve HTTPS requests
まず公式ドキュメントの記載について確認すると以下の記載が見つかりました。
This control checks if Amazon CloudFront distributions are using a custom SSL/TLS certificate and are configured to use SNI to serve HTTPS requests.
この記載からすると検出結果は以下のようになると読み取れます。
一方で上記の記載の後には検出結果がFAILEDになる条件として以下のようにも記載されています。
This control fails if a custom SSL/TLS certificate is associated but the SSL/TLS support method is a dedicated IP address.
また、上記ドキュメントに記載されている修復手順の記載は以下の通りで「カスタム証明書未使用の場合はカスタム証明書を使用するよう設定する」といった手順は特に言及されていません。
To configure a CloudFront distribution to use SNI to serve HTTPS requests, see Using SNI to Serve HTTPS Requests (works for Most Clients) in the CloudFront Developer Guide.
さらにカスタム証明書の利用有無については[CloudFront.7] CloudFront distributions should use custom SSL/TLS certificates
という別のコントロールによってチェックされます。カスタム証明書未使用の場合をCloudFront.8
でもFAILEDと検出してしまうと、検出内容が重複することになります。
これらのことを踏まえると検出結果は以下のようになるとも解釈できます。
ドキュメントの記載だけだとカスタム証明書未使用の場合に検出結果がどうなるか解釈が難しかったので、実際にCloudFrontのディストリビューションを作成して検出結果を確認してみました。
やってみる
各パターンについて実際にCloudFrontのディストリビューションを作成してSecurity Hubの検出結果を確認してみます。
カスタム証明書無しの場合
マネコンからCloudFrontのディストリビューションを作成してみます。"Origin domain"と"説明"を入力し、WAFの保護は無効、その他の設定は全てデフォルトでディストリビューションを作成します。
カスタム証明書あり・SNI利用の場合
続いてカスタム証明書を設定する場合についても確認してみましょう。カスタム証明書を設定し、レガシークライアントサポート
は無効のままディストリビューションを作成します。
カスタム証明書あり・専用IPアドレス利用の場合
続いてカスタム証明書を設定しつつSNIではなく専用IPアドレスを利用する場合も確認しておきます。600USD/月のコストが発生するので、検証が終わったら即削除するのを忘れないよう注意しましょう。
検出結果を確認
ディストリビューションを作成したらSecurity Hubの検出結果が確認できるようになるのを待ちます。専用IPを使っているので早く結果が出るのを祈りましょう🙏
結果が出たらSecurity Hubのマネコンを確認していきます。以後いくつか画面キャプチャを記載していますが、各CloudFrontディストリビューションの用途は以下画像の通りです。
カスタム証明書無しの場合
まずCloudFrontデフォルトの証明書を利用し、カスタム証明書は利用しないパターンです。
まず[CloudFront.7] CloudFront distributions should use custom SSL/TLS certificates
が検出されています。
カスタム証明書を使用していないので想定通りですね。次に[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requests
の検出結果を確認してみましょう。
こちらも検出されていました。ということでカスタム証明書未使用の場合も[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requests
のコントロールには検知されるようです。
カスタム証明書あり・SNI利用の場合
続いてカスタム証明書あり・SNI利用の場合を確認してみましょう。こちらはCloudFront.7,CloudFront.8共にコンプライアンスのステータスがPASSEDとなりました。
想定通りです。
カスタム証明書あり・専用IPアドレス利用の場合
最後にカスタム証明書と専用IPアドレスを利用する構成についても確認しておきましょう。カスタム証明書を利用しているので[CloudFront.7] CloudFront distributions should use custom SSL/TLS certificates
についてはPASSEDとなっています。
一方で[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requests
についてはFAILEDとなっていました。
これも想定通りの挙動です。
まとめ
検証の結果[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requests
の評価結果は以下の通りでした。
CloudFront.8の検出条件は"カスタム証明書を使用している" AND "SSL/TLS support methodに専用IPを使用している"
ではなく"カスタム証明書を使用していない" OR ("カスタム証明書を使用している" AND "SSL/TLS support methodに専用IPを使用している")
となるようです。つまりカスタム証明書を使用しないCloudFrontディストリビューションは常にCloudFront.7,CloudFront.8の両方が検知されることになります。